package DAO;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import to.Cidade;
import to.Estado;
import util.HibernateUtil;

@SuppressWarnings("serial")
public class CidadeDAO implements Serializable {
	public List<Cidade> pesquisarPorNome(String nomeParaBuscar) throws Exception {
		List<Cidade> cidades = null;
		try {
			Session session = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = session.createCriteria(Cidade.class);
			criteria.addOrder(Order.asc("nome"));
			criteria.add(Restrictions.ilike("nome", nomeParaBuscar));
			cidades =(List<Cidade>) criteria.list();
		} catch (Exception e) {
			throw new Exception(e.getMessage());		}
		return cidades;
	}

	public List<Cidade> pesquisarCidadesPorEstado(Integer estado) throws Exception {
		List<Cidade> lista = null;
		try {
			Session sessao = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = sessao.createCriteria(Cidade.class);
			criteria.add(Restrictions.eq("estado.codigo", estado));
			criteria.addOrder(Order.asc("nome"));
			lista = (List<Cidade>) criteria.list();
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}
		return lista;
	}
	public Cidade buscarCidadePorCodigo(Integer codigoCidade) throws Exception {
		Cidade cidade = null;
		try {
			Session session = HibernateUtil.getSessionFactory().openSession();
			cidade = (Cidade) session.get(Cidade.class, codigoCidade);
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}
		return cidade;
	}
}
